'''
s = "Hello, Python world!"
#1、字符串长度计算
print("字符串的长度为：",len(s))

#2、计算字符串中"o"字符的个数
print("字符串中o的个数为：",s.count("o"))

#3、将字符串转换为大写
print("符串转换为大写后：",s.upper())

#4、将字符串转换为小写
print("将字符串转换为小写后：",s.lower())

#5、查找"Python"在字符串中的位置
print("Python在字符串中的位置为：",s.index("Python"))

#6、替换字符串中的"world"为"universe
print("替换后的字符串：",s.replace("world","universe"))

#7、检查字符串是否以"Hello"开始
if s.index("Hello")==0:
    print("字符串以Hello开始")
else:
    print("字符串不以Hello开始")

#8、检查字符串是否以"!"结尾
if s.index("!")==len(s)-1:
    print("字符串以!结束")
else:
    print("字符串不以!结束")

#9、以","为分隔符，拆分字符串
print("拆分后的字符串",s.split(","))

#10、去除字符串首尾的"!"
print("去除字符串首尾的!后：",s.strip("!"))

#11、字符串反转
print("反转后的字符串：",list(reversed(s)))

#12、字符串切片，获取"Python"
print("字符串切片，获取Python",s[6:13])

#13、将字符串s中的"Hello,"删除
print("删除Hello:",s.lstrip("Hello"))

#14、拼接两个字符串 "Hello," 和 "World!"
print("拼接后的字符：","Hello"+"World!")

#15、使用f-string合并字符串和数字2021
print(f"合并后的字符串:{s}{2021}")

#16、找出'o'第一次出现的位置
s2="rate rate rate!"
print("a第一次出现的位置：",s2.find("a"))

#17、找出'e'最后一次出现的位置
s3="Hello,Hello Word!"
print("'e'最后一次出现的位置:",s3.rfind("e"))

#18、计算字符串中空格的数量
print("字符串中空格的数量:",s.count(" "))

#19、使用循环遍历字符串中的每个字符
for string in s:
    print(string)

#20、将字符串转为"列表"形式，每个字符为一个列表元素
print(list(s))

#21、字符串排序（提示：先转换为列表）
mylist=list(s)
mylist.sort()
s4="".join(mylist)
print("字符串排序后：",s4)

#22、判断字符串是否为数字
print(s.isdigit())

#23、将列表 `['Hello,', 'Python', 'World!']` 使用空格连接为一个字符串
my_list=['Hello,', 'Python', 'World!']
print(" ".join(my_list))

#24、使用%操作符格式化字符串，将数字100插入到"Number: "后面
print("Number:%d"%100)

#25、检查字符串是否全部为小写字母
print(s.islower())

#26、检查字符串是否全部为大写字母
print(s.isupper())

#27、将数字列表 `[1, 2, 3]` 转换成字符串，元素之间用`-`连接
mylist2=[1,2,3]
print("-".join(map(str, mylist2)))

#找出字符串中所有的"o"的位置
position=[]
for i,string in enumerate(s):
    if string=="o":
        position.append(i)
print("o出现的所有位置：",position)

#29、替换字符串中的第一个"o"为"O"
print("替换字符串中的第一个o为O后：",s.replace("o","O",1))

#30、字符串插入操作，向字符串指定位置插入子字符串"amazing "
list1=list(s)
list1[3]="amazing"
print("".join(list1))
'''
#进阶习题
s = "Python is great!"
#1. 字符串反转: 给定字符串`s = "Python is great!"`，不使用任何内置函数，编写代码以反转字符串。
list1=list(s)
list1=list1[::-1]
print("字符串反转后：","".join(list1))

#2. 字符计数: 对于同一个字符串`s`，计算字符 `t'` 在其中出现的次数。
print("字符t出现的次数：",s.count("t"))

#3. 替换字符: 把字符串`s` 中的所有空格替换成下划线 ``。
print(s.replace(" ","_"))

#4.检查回文: 检查字符串`s2 = "A man, a plan, a canal, Panama!"` 在忽略大小写、标点和空格的情况下是否为回文字符串。
s2 = "A man, a plan, a canal, Panama!"
s2=s2.replace(" ","")
s2=s2.replace(",","")
s2=s2.replace("!","")
s2=s2.lower()
if(s2==s2[::-1]):
    print("是回文串！")
else:
    print("不是回文串！")

#5. 子字符串查找: 在`s` 中查找第一次出现子字符串 `is"` 的位置。
print("s`中第一次出现子字符串 is 的位置是：",s.index("is"))

#6. 字符串插入: 在`s` 中第一个 `t'` 字符之后插入子字符串`"_inserted
index=s.find("t")
list1=list(s)
list1.insert(index+1,"inserted")
print("".join(list1))

#7. 部分替换: 替换`s` 中第一次出现的 `great"` 为 `awesome"`。
print(s.replace("great","awesome",1))

#8. 切片与拼接: 将`s` 切分为两部分，其中第一部分包含前半部分的字符，第二部分包含后半部分的字符，然后将这两部分以相反顺序拼接起来。
half=len(s)//2
part1=s[0:half]
part2=s[half:]
print(part2+part1)

#9. 创建字符串列表: 使用列表生成式，根据字符串`s` 创建一个列表，其中包含`s` 的每个单词的首字母大写形式。
result = [string.capitalize() for string in s.split()]
print(result)

#10. 字符替换加密: 编写一个函数`encrypt`，使用字典 `a: m, b: n, ... z: l}` 的对应规则加密字符串`s3 = "encryption"`。
def encrypt(s):
    my_dict = {chr(ord('a') + i): chr(ord('m') + i) for i in range(13)}
    for i in range(13, 26):
        my_dict[chr(ord('a') + i)] = chr(ord('a') + i - 13)
    return ''.join([my_dict[c] for c in s])

s3 = "encryption"
result = encrypt(s3)
print("加密后的字符串是：",result)